Advances in technology have resulted in smaller and more powerful computing devices. For example, there currently exist a variety of portable personal computing devices, including wireless computing devices, such as portable wireless telephones, personal digital assistants (PDAs), and paging devices that are small, lightweight, and easily carried by users. More specifically, portable wireless telephones, such as cellular telephones and Internet Protocol (IP) telephones, can communicate voice and data packets over wireless networks. Further, many such wireless telephones include other types of devices that are incorporated therein. For example, wireless telephones can also include a digital still camera, a digital video camera, a digital recorder, and an audio file player. Also, such wireless telephones can process executable instructions, including software applications, such as a web browser application, that can be used to access the Internet. As such, these wireless telephones can include significant computing capabilities.
Digital signal processors (DSPs), image processors, and other processing devices are frequently used in portable personal computing devices and operate in conjunction with one or more caches. A cache is usually a copy of data that exists somewhere in a memory hierarchy. In some cases, the cache may have the only “up to date” copy of the data in the system. One typical component of a cache is a data memory. This data memory is divided into cache lines, where each cache line is a copy of a unique (and contiguous) part of the system memory. Another typical component of a cache is a way to associate a system memory address with a particular cache line.
This way to associate a system memory address with a particular cache line is often called a tag. Another typical component of a cache is a state to indicate whether a cache line is valid, modified, owned, and the like.